x

String Compression

Leetcode #443 | Medium | Указатель на запись

Идея

Цикл по массиву + цикл по повторам, заводим указатель word и изменяем in-place, сжатие гарантирует что мы не выйдем за пределы массива

Big-O

  • Время O(N)
  • Память O(1)

Код

class Solution {
    public int compress(char[] chars) {
        int write = 0;
        for (int i = 0; i < chars.length; i++) {
            int count = 1;
            char currentChar = chars[i];
            while (i + 1 < chars.length && chars[i + 1] == chars[i]) {
                i++;
                count++;
            }
            chars[write++] = currentChar;
            if (count > 1) {
                for (char c : String.valueOf(count).toCharArray()) {
                    chars[write++] = c;
                }
            }
        }
        return write;
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x